package com.example.mybatisplus.web.controller;

import com.example.mybatisplus.mapper.AdminMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.mybatisplus.common.JsonResponse;
import com.example.mybatisplus.service.AdminService;
import com.example.mybatisplus.model.domain.Admin;

import java.util.List;


/**
 *
 *  前端控制器
 *
 *
 * @author lxp
 * @since 2021-06-17
 * @version v1.0
 */
//@Controller
//@ResponseBody
@RestController
@RequestMapping("/api/admin")
public class AdminController {

    @Autowired
    private AdminMapper adminMapper;

    @Autowired
    private AdminService adminService;

    // 在springboot中  所有的映射方法  都默认返回视图（页面）
    // 在前后端分离开发中  后端是没有页面的  所有只能让映射关系返回数据
    // 如果要让方法返回数据  那必须加注解


    // 只有明文规定了post的请求是post  其余都是get

    // 1. 经典的get请求传参   http://127.0.0.1:8080/api/admin/getById?id=1
    //    1) 前端传了什么键名，后端就以什么参数列表进行接收  要求键名匹配参数名
    //    2) 前端传了什么键名，后端用对象去接  要求键名必须匹配对象的属性名
    // 2. 占位符get请求传参 @PathVariable

    // 3. POST请求传递json数据  后端必须以对象去接  要求键名必须匹配对象的属性名
    @GetMapping("getById")
    public Admin getById(Admin a){
        Admin admin = adminMapper.selectById(a.getId());
        System.out.println(admin);
        return admin;
    }

    // http://127.0.0.1:8080/api/admin/getById2/1
    @GetMapping("getById2/{id}")
    public JsonResponse getById2(@PathVariable("id") Long id){
        Admin admin = adminMapper.selectById(id);
        System.out.println(admin);
        return JsonResponse.success(admin);
    }

    // 前后端分离开发中  post请求传递的一定是json数据  除了用对象去接以外 还需要给对象加注解
    // 后端给前端的数据一定要符合json格式
    @PostMapping("addAdmin")
    public JsonResponse addAdmin(@RequestBody Admin admin){
        adminMapper.insert(admin);
        return JsonResponse.success(0);
    }

    @GetMapping("list")
    public JsonResponse list(){
        List<Admin> admins = adminMapper.selectList(null);
        return JsonResponse.success(admins);
    }
}

